import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 导入路由守卫
// import '@/permission'

// 引入全局样式表
import '@/assets/global.less'

// 引入elementui组件
import ElementUi from 'element-ui'
// 引入elementui样式
import 'element-ui/lib/theme-chalk/index.css'
// 引入axios
import axios from 'axios'
// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'

// 导入富文本编辑器的样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

// 导入dayjs全局过滤器
import dayjs from 'dayjs'




axios.defaults.baseURL = 'http://big-event-vue-api-t.itheima.net'

Vue.prototype.$http = axios

Vue.config.productionTip = false

// 注册Elementui
Vue.use(ElementUi)

// 全局注册富文本编辑器
Vue.use(VueQuillEditor)

// 定义全局过滤器
Vue.filter('dateFormat', (dt) => {
	return dayjs(dt).format('YYYY-MM-DD HH:mm:ss')
})


// 添加请求拦截器
axios.interceptors.request.use(function(config) {
	// 只需要给需要权限的接口添加
	// 判断哪些是需要访问权限的接口？？？？
	if (config.url.startsWith('/my')) {
		// 添加统一的headers
		config.headers.Authorization = store.state.token
	}
	return config;
}, function(error) {
	// 对请求错误做些什么
	return Promise.reject(error);
});

// 定义响应拦截器
axios.interceptors.response.use(function(response) {
	// 响应状态码为 2xx 时触发成功的回调，形参中的 response 是“成功的结果”
	return response
}, function(error) {
	// 响应状态码不是 2xx 时触发失败的回调，形参中的 error 是“失败的结果”
	if (error.response.status === 401) {
		// 无效的 token
		// 把 Vuex 中的 token 重置为空，并跳转到登录页面
		store.commit('updateToken', '')
		router.push('/login')
	}
	return Promise.reject(error)
})


new Vue({
	router,
	store,
	render: h => h(App)
}).$mount('#app')
